package com.ddone.transaction.annotation.service.impl;

import com.ddone.transaction.annotation.service.EmpService;
import com.ddone.transaction.annotation.service.TopService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author ddone
 * @date 2024/3/21-01:43
 */
@Service
public class TopServiceImpl implements TopService {

    @Autowired
    private EmpService empService;

    /**
     *
     *  TODO:事务的传播行为
     *    1.REQUIRED  父方法有就加入，没有就独立创建！
     *    2.REQUIRES_NEW  不管父方法有没有，都独立创建！
     *    3.SUPPORTS 父方法有，就加入，没有就无事务状态执行！
     *    4.MANDATORY 如果父方法有就加入，如果没有就抛异常！
     *    5.NOT_SUPPORTED 不管父类有没有，都无事务用运行！
     *    6.NEVER  如果没有，就正常无事务运行，如果父类存在，就抛异常Q
     *    7.NESTED  实现的技术不同，但是效果和required一致！
     *              有就加入，没有就自己独立新建！
     *
     * @param id
     * @param name
     * @param salary
     */

    // @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public void change(Integer id, String name, int salary) {
        empService.changName(id,name);
        empService.changeSalary(id,salary);
    }
}
